import random

# 冒泡排序是稳定的，数字相同就不会交换，不会受到相同数字的影响
def bubble_sort(li):
    for i in range(len(li) - 1):  # i表示第n趟 一共n或者n-1趟
        for j in range(len(li) - i - 1):  # 第i趟 无序区[0，len(li)-i-1] j表示箭头0~n-i-2
            if li[j] > li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]


li = list(range(100))
random.shuffle(li)
bubble_sort(li)
print(li)



# 改进版冒泡排序，有优化但是并不是很大，时间复杂程度分为最好 平均 最坏
def bubble_sort(li):
    for i in range(len(li) - 1):
        exchange = False
        for j in range(len(li) - i - 1):
            if li[j] > li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]
                exchange = True
        if not exchange:
            break